#include<stdio.h>
#include<string.h>
// 复合数据类型：由多种数据类型组合在一起，描述复杂事物

//struct:结构体关键字    
//Students ： 结构体名

struct Student
// 结构体定义（在大括号里）
{
    int id;//学号
    
    char Name[20];
    //.......
};


// typedef struct 
// {

// }Stu;
//跟上面的写法没有区别




//类型名重定义
typedef struct Student Stu;  //  把struct Student 定义成 Stu









//结构体指针取成员变量，用 ->

void PrintStu(const Stu *s)// 对于不会修改信息的函数，默认加上 const
{
  printf("%d %s\n",s->id,s->Name);
}





struct Teacher
{
    int id;
    
    char Name[20];
    
    Stu s[10];//结构体成员（一个结构体可以成为另一个结构体的成员变量）
        //容量和大小不一定相等（比如人员不够 10 个 ）
    
    int size ; //当前数组的大小
    
};









int main()
{
    //定义一个结构体变量:结构体关键字+结构体名+变量名
    
    //初始化

    // struct Student s = {1,"zhangsan"};
    // Stu s = {1,"zhangsan"};

    // s.id = 2;
    
    // strcpy(s.Name,"lisi");

    // printf("%d %s\n",s.id,s.Name);  // 变量名后加 . 取出结构体里的 变量 

    Stu s[3] = 
    {
        {1,"zhangsan"},
        {2,"lisi"},
        {3,"wangwu"}
    };
    

    for(int i=0;i<3;i++)
    {
       PrintStu(s+i); 
    }
   
   
   
    return 0;
}